package cn.tedu.weibo.controller;

import cn.tedu.weibo.mappers.UserMapper;
import cn.tedu.weibo.pojo.DTO.UserLoginDTO;
import cn.tedu.weibo.pojo.DTO.UserRegDTO;
import cn.tedu.weibo.pojo.VO.UserVO;
import cn.tedu.weibo.pojo.entity.User;
import io.swagger.annotations.Api;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.util.Date;

@RestController
@RequestMapping("/v1/users/")
@Api(tags = "1.用户模块")
public class Usercontroller {
    @Autowired(required = false)
    private UserMapper userMapper;

    /**
     * 注册功能
     * @param userRegDTO
     * @return
     */
    @PostMapping("reg")
    public int reg(@RequestBody UserRegDTO userRegDTO){
    System.out.println("userRegDTO = " + userRegDTO);
    //确定用户名是否被占用
    UserVO userVO = userMapper.selectByUsername(userRegDTO.getUsername());
    if (userVO!=null){
        return 2;//用户名被占用
    }
    // 存入user类：实体类
    User user = new User();
    // 把DTO中已有的属性复制到实体类中
    BeanUtils.copyProperties(userRegDTO,user);
    // 给id和created赋值，id会自动赋值
    user.setCreated(new Date());
    // 插入数据
    userMapper.insert(user);
    return 1;
}

    /**
     * 登录功能
     * @param userLoginDTO
     * @return
     */
    @PostMapping("login")
    public int login(@RequestBody UserLoginDTO userLoginDTO, HttpSession session){
        System.out.println("userLoginDTO:"+userLoginDTO);
        UserVO userVO=userMapper.selectByUsername(userLoginDTO.getUsername());
        if(userVO != null){
            if (userVO.getPassword().equals(userLoginDTO.getPassword())){
                session.setAttribute("user", userVO);
                return 1;
            }
            return 2;
        }
        return 3;
    }

    /**
     * 登录状态功能
     * @param session
     * @return
     */
    @GetMapping("currentUser")
    public UserVO currentUser(HttpSession session){
    UserVO userVO=(UserVO) session.getAttribute("user");

        return userVO;
    }

    /**
     * 退出功能
     * @param session
     */
    @GetMapping("logout")
    public void logOut(HttpSession session){
//        删除会话对象
        session.removeAttribute("user");
    }
}
